import { app } from 'electron';
import { autoUpdater, UpdateInfo } from 'electron-updater';// 引入自动更新模块
import logger from '../logger/index.js'

class updateService {
    private feedUrl:string = 'http://127.0.0.1:8000/'; //新版本安装包的服务器地址
    public init() {
        this.registerAutoUpdaterEvent()
    }

    private registerAutoUpdaterEvent() {
        logger.info(`当前版本号:${app.getVersion()}`);
        logger.info(`新版本地址:${this.feedUrl}`);
        // 配置安装包远端服务器
        autoUpdater.setFeedURL(this.feedUrl);// 更新包位置

        // 下面是自动更新的整个生命周期所发生的事件
        autoUpdater.on('error',(e,err) => {
            logger.info("error", err);
            this.sendUpdateMessage('error', err);
        });
        autoUpdater.on('checking-for-update',  event=> {
            logger.info("检测更新地址");
        });
        autoUpdater.on('update-available', (updateInfo: UpdateInfo) => {
            logger.info("存在更新",updateInfo);
            this.sendUpdateMessage('update-available', updateInfo);
        });
        autoUpdater.on('update-not-available', event => {
            logger.info("无可用更新");
        });

        // 更新下载进度事件
        autoUpdater.on('download-progress', progress => {
            logger.info("更新下载进行中",progress);
            // this.sendUpdateMessage('downloadProgress', progressObj);
        });
        // 更新下载完成事件
        autoUpdater.on('update-downloaded', info => {
            logger.info("更新下载完成",info);
            autoUpdater.quitAndInstall();
        });

        //执行自动更新检查
        autoUpdater.checkForUpdates();
    }

    // 主进程主动发送消息给渲染进程函数
    private sendUpdateMessage(message, data) {
        console.log({ message, data });
        logger.info("sendUpdateMessage",message,data);
        // webContents.send('message', { message, data });
    }
}

export default updateService